package cn.actoncode.boot.framework.zhipu.core.bean;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;

@Data
public class ChatGLMRequest {

    /**
     * 用于区分每次请求的唯一标识编号
     */
    @JSONField(name = "request_id")
    private String requestId;

    /**
     * 调用对话模型时，将当前对话信息列表作为提示输入给模型; 按照 {"role": "user", "content": "你好"} 的键值对形式进行传参; 总长度超过模型最长输入限制后会自动截断，需按时间由旧到新排序
     */
    private List<ChatGLMPrompt> prompt;

    /**
     * 温度系数，取值>0.0，默认为1.0。更大的温度系数表示模型生成的多样性更强。取值范围0.5～1.0
     */
    private Double temperature;

    /**
     * topP采样又称核采样（Nucleus Sampling）。topP值会定义候选集在概率分布中的概率密度。若topP值为0.6，则解码器输出的概率密度的前60%会作为候选集。我们建议您不要与topK和temperature同时使用或同时进行调节。取值范围0～1.0，当topP为0时，该参数不起作用。
     */
    @JSONField(name = "top_p")
    private Double topP;

    /**
     * 模型最大输出 tokens
     */
    @JSONField(name = "max_tokens")
    private int maxTokens = 2048;

    /**
     * SSE接口调用时，用于控制每次返回内容方式是增量还是全量，不提供此参数时默认为增量返回
     * - true 为增量返回
     * - false 为全量返回
     */
    private boolean incremental = false;
}
